import { InjectionKey } from 'vue'

import { useStore as baseUseStore, createStore, Store } from 'vuex'

interface State {
    username: string
}

export const key: InjectionKey<Store<State>> = Symbol()

export const store = createStore<State>({
    state: {
        username: '张三',
    },
    getters: {
        getName: (state) => {
            return state.username
        },
    },
    mutations: {
        SET_USERNAME(state, username: string) {
            state.username = username
        },
    },
    actions: {},
})

export function useStore() {
    return baseUseStore(key)
}
